//
//  OAuthViewController.swift
//  Weibo1.0
//
//  Created by 黄礼潮 on 16/2/18.
//  Copyright © 2016年 黄礼潮. All rights reserved.
//

import UIKit

class OAuthViewController: UIViewController {
    
    private lazy var webView = UIWebView()
    
   /// MARK----监听方法
    @objc private  func clickClose(){
        
        dismissViewControllerAnimated(true) { () -> Void in
            print("66")
        }
        
    }
    
/// MARK ---- 自动填充密码
    @objc private func addFill(){
    
        let js = "document.getElementById('userId').value = '15805514085';" +
        "document.getElementById('passwd').value = 'hlc19910103';"
        
        // 让 webView 执行 js
        webView.stringByEvaluatingJavaScriptFromString(js)
    }

  /// MARK----设置界面
    override func loadView() {
        view = webView
        
        //设置代理
        webView.delegate = self
        
        title = "登录新浪微博"
        navigationItem.leftBarButtonItem = UIBarButtonItem(title: "关闭", style: .Plain, target:self, action: "clickClose")
        navigationItem.rightBarButtonItem = UIBarButtonItem(title: "自动填充", style: .Plain, target:self, action: "addFill")
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
/// 为了调试写这段代码，防止为nil 影响渲染效率
        //view.backgroundColor = UIColor.whiteColor()
        
        //加载页面
        self.webView.loadRequest(NSURLRequest(URL: NetworkTools.shardTools.oauthURL))
        
    }

   
}
// MARK----UIWebViewDelegate
extension OAuthViewController: UIWebViewDelegate {
    /// 将要加载请求的代理方法
    ///
    /// - parameter webView:        webView
    /// - parameter request:        将要加载的请求
    /// - parameter navigationType: navigationType，页面跳转的方式
    ///
    /// - returns: 返回 false 不加载，返回 true 继续加载
    /// 如果 iOS 的代理方法中有返回 bool，通常返回 true 很正常，返回 false 不能正常工作
    func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
        
        // 目标：如果是百度，就不加载
        // 1. 判断访问的主机是否是 www.baidu.com
        guard let url = request.URL where url.host == "www.baidu.com" else {
            return true
        }
        
        // 2. 从百度地址的 url 中提取 `code=` 是否存在
        guard let query = url.query where query.hasPrefix("code=") else {
            print("取消授权")
            
            return false
        }
        
        // 3. 从 query 字符串中提取 `code=` 后面的授权码
        let code = query.substringFromIndex("code=".endIndex)
        
        print(query)
        print("授权码是 " + code)
        
        // 4. 加载 accessToken
        NetworkTools.shardTools.loadAccessToken(code) { (result, error) -> () in
            
            // 1> 判断错误
            if error != nil {
                print("出错了")
                return
            }
            
            // 2> 输出结果
            print(result)
        }
        
        return false
    

        
    }

}
